home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / grafik / 3d & render tools / irit / contrib / scripts / waves.irt < prev    next >
Encoding:
Text File  |  1996-07-16  |  3.5 KB  |  152 lines

  1. #
  2. #    model of a wave 
  3. #
  4.  
  5. # central curve of the central wave
  6.  
  7. main_wave=cbspline ( 3 ,
  8.             list (    ctlpt (E3, -1 , 0 , 0),
  9.                 ctlpt (E3, -0.8 , 1 , 0),
  10.                 ctlpt (E3, 0.4 , 2.5 , 0 ),
  11.                 ctlpt (E3, 1.6, 4 , 0),
  12.                 ctlpt (E3, 2.8 , 7 , 0),
  13.                 ctlpt (E3, 4.3 , 7.5 , 0),
  14.                 ctlpt (E3, 5.5, 7.7 , 0),
  15.                 ctlpt (E3, 7.0  , 6.5 , 0),
  16.                 ctlpt (E3, 7.0  , 4 ,0)),
  17.             list (KV_OPEN));
  18.  
  19.  
  20. # central curve of one of the 2 side waves
  21.  
  22. side_wave1 = cbspline ( 3 ,
  23.             list (  ctlpt (E3, -1 , 0 , 0),
  24.                 ctlpt (E3, -0.8 , 1.2 ,0),
  25.                 ctlpt (E3, 0.4 , 1.4 ,0),
  26.                 ctlpt (E3, 1.2 , 1.5,0),
  27.                 ctlpt (E3, 2    , 1.8 ,0),
  28.                 ctlpt (E3, 4.2 , 2.5 , 0),
  29.                 ctlpt (E3, 6.4  , 2.3 , 0),
  30.                 ctlpt (E3, 7.6 ,  1.52 , 0),
  31.                 ctlpt (E3, 9.8 , 1.2 ,  0),
  32.                 ctlpt (E3, 10 , 0 , 0 ) ) ,
  33.             list (KV_OPEN));
  34.  
  35. # central curve of the second side wave
  36.  
  37. side_wave = cbspline ( 3 ,
  38.             list (  ctlpt (E3, -1 , 0 , 0),
  39.                 ctlpt (E3, -0.8 , 0.7 ,0),
  40.                 ctlpt (E3, 0.4 , 0.9, 0),
  41.                 ctlpt (E3, 1 , 1.1 , 0),
  42.                 ctlpt (E3, 1.6 , 1.3, 0),
  43.                 ctlpt (E3, 2.5 , 1.6 , 0),
  44.                 ctlpt (E3, 3.3 , 1.7 , 0),
  45.                 ctlpt (E3, 4.8 , 1.7 , 0)),
  46.             list (KV_OPEN));
  47.  
  48. # placement of the curves at the good place
  49.  
  50. side_wave2 =side_wave1 * trans( vector (0 , 0 , 4));
  51. side_wave3=side_wave * trans( vector (0 , 0 , -3));
  52.  
  53. # cross section of the waves
  54.  
  55. wave_section=cbspline ( 3 ,
  56.             list (  ctlpt (E3, 0, -3 , 0),
  57.                 ctlpt (E3, 1.7 , -2.5 , 0),
  58.                 ctlpt (E3, 2, -2 , 0),
  59.                 ctlpt (E3, 2 , 2 , 0),
  60.                 ctlpt (E3, 1.7 , 2.5 , 0),
  61.                 ctlpt (E3, 0 , 3, 0),
  62.                 ctlpt (E3, -1.7 , 2.5 , 0),
  63.                 ctlpt (E3, -2 , 2 , 0),
  64.                 ctlpt (E3, -2 ,-2 , 0),
  65.                 ctlpt (E3, -1.7 , -2.5 , 0),
  66.                 ctlpt (E3, 0 , -3 , 0) ) ,
  67.             list (KV_OPEN));
  68.  
  69. # coefficients of scaling for the waves
  70.  
  71. scaleCrv = cbspline( 3,
  72.             list(   ctlpt( E2, 3, 2),
  73.                 ctlpt( E2, 2.6, 1.6),
  74.                 ctlpt( E2, 2.1, 1.3),
  75.                 ctlpt( E2, 1.8 , 0.9),
  76.                 ctlpt( E2, 1.5, 0.7),
  77.                 ctlpt( E2, 1.3 , 0.5),
  78.                 ctlpt( E2, 1.2 , 0.1) ) ,
  79.             list (KV_OPEN));
  80.  
  81. # construction of the waves
  82.  
  83. wave = SWPSCLSRF (wave_section, main_wave ,scaleCrv,off, 0 ); 
  84. wave2=SWPSCLSRF (wave_section, side_wave2,scaleCrv,off, 0 );
  85. wave3=SWPSCLSRF (wave_section, side_wave3,scaleCrv,off, 0 );
  86.  
  87. # colors and attributs of the waves
  88.  
  89. color (wave, blue);
  90. attrib(wave,"reflect",0.6);
  91. attrib(wave,"rgb","0,50,220");
  92. color (wave2, blue);
  93. attrib(wave2,"reflect",0.8);
  94. attrib(wave2,"rgb","0,50,240");
  95. color (wave3, blue);
  96. attrib(wave3,"reflect",0.4);
  97. attrib(wave3,"rgb","0,30, 230");
  98.  
  99. waves=list (wave,wave2,wave3);
  100.  
  101.  
  102. #
  103. # drawing of the fish
  104. #
  105.  
  106. fish_profile=cbspline( 3 ,
  107.             list (  ctlpt (E3, 0   , 0 , 0),
  108.                 ctlpt (E3, 0.6 , 0 , 0.6 ),
  109.                 ctlpt (E3, 1   , 0 , 1 ),
  110.                 ctlpt (E3, 1.5 , 0 , 1 ),
  111.                 ctlpt (E3, 2   , 0 , 3),
  112.                 ctlpt (E3, 1.7 , 0 , 4),
  113.                 ctlpt (E3, 1.5 , 0 , 4.5 ),
  114.                 ctlpt (E3, 0.8 , 0 , 5),
  115.                 ctlpt (E3, 0   , 0 , 5.4 )),
  116.             list (KV_OPEN));
  117.  
  118. fish_body=surfrev(fish_profile);
  119.  
  120. color (fish_body,red);
  121. attrib(fish_body,"reflect",0.9);
  122. attrib(fish_body,"rgb","240,0,55");
  123.  
  124. # fish attribute
  125.  
  126. fish_attr=cbspline( 3 ,
  127.             list (  ctlpt (E3,2   , 0.4 , 1),
  128.                 ctlpt (E3, 2.5 , 0.4 , 1 ),
  129.                 ctlpt (E3, 3   , 0.4 , 3),
  130.                 ctlpt (E3, 2.7 , 0.4 , 4),
  131.                 ctlpt (E3, 2.5 , 0.4 , 4.5 ),
  132.                 ctlpt (E3, -2.5 , 0.4 , 4.5 ),
  133.                 ctlpt (E3, -2.7 , 0.4 , 4),
  134.                 ctlpt (E3, -3   , 0.4 , 3),
  135.                 ctlpt (E3, -2.5 , 0.4 , 1 ),
  136.                 ctlpt (E3, -2   , 0.4 , 1),
  137.                 ctlpt (E3, 2   , 0.4 , 1)),
  138.             list (KV_OPEN));
  139.  
  140. fish_attribute=extrude(fish_attr,vector(0,-0.8,0));
  141.  
  142.  
  143. color (fish_attribute,yellow);
  144. attrib(fish_attribute,"reflect",0.9);
  145. attrib(fish_attribute,"rgb","0,255,240");
  146. fish=list(fish_body,fish_attribute);
  147.  
  148.             
  149. interact(waves);
  150.  
  151.  
  152.